SQLite的sqlite3_column_blob函数

SQLite3利用函数sqlite3_column_blob来返回blob字段的内容的指针,并通过sqlite3_column_bytes来返回对应该字段的长度。

只是一直有一个疑问就是通过sqlite3_column_blob返回的二进制blob内容的内存是谁来释放,是由SQLite内部还是用调用者来释放。

后来仔细观察了内存变化发现,sqlite3_column_blob函数会预先分配一块内存,每次调用sqlite3_step然后sqlite3_column_blob字段内容的时候,都会在这一个指定的空间内写入,所以调用者不必去管理者块内存,也因此,每次sqlite3_column_blob返回的二进制内容都需重新写去到调用者需要的地方去,否则下次再有二进制读出的时候,原来的内容就会被释放掉。

posted @ 2014-04-13 15:47  萧叶  阅读(4741)  评论(1编辑  收藏  举报